1. Field
The present invention relates to installing software on computer systems, and, more particularly, to generating customized software for execution on computer systems using late binding techniques.
2. Description of the Related Art
Computer systems are information handling systems which can be designed to give independent computing power to one user or a plurality of users. Computer systems may be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, notepads and embedded systems. A typical computer system includes at least one processing unit, associated memory and a number of input/output (I/O) devices. A computer system processes information according to a program and produces resultant output information via the I/O devices. A program is a list of internally stored instructions such as a particular application program and/or an operating system. The programs that control the operation of a computer system are commonly referred to as software applications or simply software. Such software must be installed in memory of a computer system or systems in order to subsequently direct the operation of the computer system or systems.
In software, binding refers to associating two pieces of information with one another. The term is most often used with regard to binding a symbol or token such as the name of a variable with some descriptive information such as a memory address, a data type, or an actual value. In other words, binding is the assigning of a value or referent to an identifier. For example, binding includes the assignment of a value to a parameter and/or the assignment of an absolute address, virtual address, or device identifier to a symbolic address or label in a computer program.
The binding time is the time in a program""s operation at which binding of information occurs. Binding time usually refers to the time at which program elements are bound to their storage locations and values. Binding of different types of elements often occurs at different times. Binding that occurs during program compilation or linkage is called static or early binding, whereas binding that occurs during program execution is called dynamic or late binding. In early binding, when a variable or sub-routine is called, the program does not have to take the time to calculate the address of the variable or sub-routine because it has already been inserted into the program code. That is, early binding is performed prior to the execution of a computer program and is not subject to change during program execution. Late binding often refers to applications that determine, during runtime, which software routines to call for particular data objects. Such applications are used, for example, when real time data is required for program execution. Thus, late binding is performed during the execution of a computer program.
Software pre-installation packages include condensed information for a software application install. Generic pre-installation packages are used in a factory environment to create any number of copies of a given software application or applications on the various computer systems produced. Typically, such pre-installation packages provide static or uniform copies of the software to the various computer systems produced. For instance, some configuration information will be the same for every computer on which the application to which the configuration information corresponds is installed. It is often difficult to change certain aspects of each installation in order to customize each installation for each computer system. For example, information such as software serial number and internet protocol addresses, etc., must be unique to every copy of the installation. Information such as CD-ROM drive letter may also be unique to every copy of the installation. Consequently, such unique information must be changed on each computer system. Such unique information is referred to herein as dynamic information.
One approach to customizing the software installation on a computer system is to partially install the applications in question. A partial installation requires later manual input from the computer system user to setup machine specific or otherwise unique information such as software serial number, Transport Control Protocol/Interface Program (TCP/IP) addresses, etc. Such an approach causes longer setup time for the computer system user and requires more computer system user knowledge and expertise. Additionally, more documentation for setup is also required. It is desirable that computer systems should be able to be used by persons not having a detailed understanding of all the configuration options of a computer and the knowledge of how to change them. Further, it is a constant aim in the field of data processing to produce systems that are easier to use.
It has been discovered that dynamic information may be late-bound in pre-installation packages. A method of late binding dynamic information provides the advantage that customized or unique information which is not known at the time of software package development but which is known at the time of computer system manufacture may be bound in a pre-installation package prior to loading the pre-installation package to computer systems ordered by a customer. Such a method provides the further advantage that such information need not be known by the customer or user of the computer system. The required knowledge and expertise of the customer or user is thereby minimized and the computer systems are made easier to use.
A method for late binding dynamic software information includes: providing a static pre-installation software package; initializing the static pre-installation software package for subsequent late binding to provide an initialized pre-installation software package; updating the initialized pre-installation software package to include dynamic information to provide a dynamic pre-installation software package; and loading the dynamic pre-installation software package to a storage medium for subsequent installation of the dynamic pre-installation software package.
A method for customizing software configurations includes: providing a static pre-installation software package; identifying a late-bindable token of the static pre-installation package; assigning a unique late-bind identifier to the late-bindable token; assigning the late-bind identifier to a late-bind identifier default value; and assigning the late-bind identifier a corresponding token value. The token value is for binding to the token identified by the late-bind identifier when the customized software package is installed.
A method for late binding customized information in a software pre-installation package, the method includes: providing a generic pre-installation software package including tokens having assigned default values; initializing the generic pre-installation software package for receiving values at late bind time by assigning a late bind identifier to each token to provide an initialized pre-installation software package; providing a list of custom token values; and adding the custom token values to the initialized software package to provide a custom pre-installation software package in which the custom token values are prepared for subsequent late binding to corresponding tokens at late bind time to provide a custom installed software package.
A method for customizing software configurations includes: finding a late-bindable token in a configuration file of pre-installation software; assigning a unique late-bind identifier to the late-bindable token; generating an initialization file; providing a token value; assigning the token value to the late-bind identifier in the initialization file; and late binding the token value to the token specified by the late-bind identifier during installation of the pre-installation software. The initialization file includes the late-bind identifier and a corresponding late-bind identifier potential value.
A computer system includes a processor and a memory. The memory is coupled to the processor. The memory includes software installed thereon. The software is installed by a software installation procedure. The software installation procedure includes: providing a static pre-installation software package; initializing the static pre-installation software package for subsequent late binding to provide an initialized pre-installation software package; updating the initialized pre-installation software package to include dynamic information to provide a dynamic pre-installation software package; and loading the dynamic pre-installation software package to a storage medium for subsequent installation of the dynamic pre-installation software package.